public static JMemberExpression JAccess(this IEntity me) { if (me == null) { return(null); } if (me is ITypeDefinition) { return(JAccess((ITypeDefinition)me)); } if (me is IType) { return(JAccess((IType)me)); } var name = JName2(me); if (me.IsStatic()) { var member = name; if (JMeta.IsGlobalMember(me)) { return(member); } if (me is IMethod && JMeta.ExtensionImplementedInInstance((IMethod)me)) { return(member); } member.PreviousMember = JAccessStatic(me.DeclaringType); return(member); } else if (me.SymbolKind == SymbolKind.Constructor) { var att = JMeta.GetJMethodAttribute((IMethod)me); if (att != null && att.Name != null) //TODO: hack { return(J.Member(att.Name)); } var ce = me.DeclaringType; var member = (JMemberExpression)JAccess(ce); return(member); } return(name); }