/// <summary>
        /// Set type for member of class or struct that have type. (functions, fields , properties)
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitTyped_member_declaration([NotNull] Typed_member_declarationContext context)
        {
            var type = ResolveType(context.type(), currentScope);

            base.VisitTyped_member_declaration(context);
            if (context.field_declaration() != null)
            {
                return(SetTypeForField(context.field_declaration(), type));
            }
            else if (context.method_declaration() != null)
            {
                return(SetTypeForFunction(context.method_declaration(), type));
            }
            else if (context.property_declaration() != null)
            {
                return(SetTypeForProperty(context.property_declaration(), type));
            }
            return(null);
        }