public static ExpressionTypeMemberDescriptor Build(PropertyInfo p)
 {
     ExpressionTypeMemberDescriptor md = new ExpressionTypeMemberDescriptor
     {
         Kind = "property",
         Name = p.Name,
         ReturnType = p.PropertyType.Name,
         ReturnExpressionType = p.PropertyType.AssemblyQualifiedName
     };
     md.Parameters = (
         from mdp in p.GetIndexParameters()
         select Build(mdp)).ToList();
     return md;
 }
 public static ExpressionTypeMemberDescriptor Build(MethodInfo m)
 {
     ExpressionTypeMemberDescriptor md = new ExpressionTypeMemberDescriptor
     {
         Kind = "function",
         Name = m.Name,
         ReturnType = m.ReturnType.Name,
         ReturnExpressionType = m.ReturnType.AssemblyQualifiedName
     };
     md.Parameters = (
         from mdp in m.GetParameters()
         select Build(mdp)).ToList();
     return md;
 }