public WebApiCommandSymbol(BaseWebApiPathSymbol parent, IEnumerable<Annotation> annotations, TypeReference result, Identifier name, Maybe<AtomSymbol> argument)
     : base(annotations, parent, result, name, argument)
 {
 }
 public WebApiQuerySymbol(BaseWebApiPathSymbol parent, IEnumerable<Annotation> annotations, TypeReference result, Identifier name, Maybe<AtomSymbol> argument, Func<BaseWebApiQuerySymbol, IEnumerable<AtomSymbol>> filters)
     : base(annotations, parent, result, name, argument, filters)
 {
 }
 protected BaseWebApiPathSymbol(IEnumerable<Annotation> annotations, ISemanticNode parent, TypeReference result, Identifier name, Maybe<AtomSymbol> argument, Func<BaseWebApiQuerySymbol, IEnumerable<AtomSymbol>> filters, Func<BaseWebApiPathSymbol, IEnumerable<IWebApiPathMember>> members)
     : base(annotations, parent, result, name, argument, filters)
 {
     Members = Guard.NotNull(members, "members")(this).ToArray();
 }
        protected virtual string GetPrivateTypeString(TypeReference reference, ISymbol relativeTo = null)
        {
            var type = reference.Type;
            var cardinality = reference.Cardinality;

            var builtInType = type as BuiltInType;
            if (builtInType != null && builtInType.Type == typeof(void))
                return "void";

            var fullName = GetRelativeName(type.FullName, relativeTo != null ? relativeTo.FullName : null);

            if (cardinality.CanBeMoreThanOne())
                return string.Format("{0}[]", fullName);

            if (cardinality.IsZeroOrOne() &&
                ((type is ExternalEnumSymbol) ||
                (type is ExternalType && ((ExternalType)type).Type.IsValueType)))
                return string.Format("{0}?", fullName);

            return fullName;
        }