public NodeTypeProperty GetProperty(string name)
{
NodeTypeProperty property;
if (propertiesByName.TryGetValue(name, out property))
return property;
PropertyInfo info = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (info == null)
throw new ArgumentException("Type " + Name + " does not have a property named " + name + ".");
return propertiesByName[name] = new NodeTypeProperty(this, info);
}