public static List getInstanceProperties(DataObject dataObject)
{
//TODO maybe optimize this to just return type.getProperties if type.isOpen (isOpen would need to be cached)
EObject eDataObject = (EObject) dataObject;
List result = new UniqueEList(eDataObject.eClass().getEAllStructuralFeatures());
for (int i = 0, count = result.size(); i < count; ++i)
{
EStructuralFeature eStructuralFeature = (EStructuralFeature)result.get(i);
if (!eStructuralFeature.isDerived() && FeatureMapUtil.isFeatureMap(eStructuralFeature))
{