internal override void Populate(string property)
        {
            RealVariable.Populate(property);

            if (ProjectedProperties.Contains(property))
            {
                return;
            }
            switch (GetVariableType())
            {
            case GremlinVariableType.Vertex:
                if (GremlinUtil.IsEdgeProperty(property))
                {
                    return;
                }
                break;

            case GremlinVariableType.Edge:
                if (GremlinUtil.IsVertexProperty(property))
                {
                    return;
                }
                break;

            case GremlinVariableType.Scalar:
                if (property != GremlinKeyword.ScalarValue)
                {
                    return;
                }
                break;

            case GremlinVariableType.Property:
                if (property != GremlinKeyword.PropertyValue)
                {
                    return;
                }
                break;
            }
            base.Populate(property);

            if (!PropertiesMap.ContainsKey(property))
            {
                string columnName = SelectKey + "_" + property;
                RealVariable.BottomUpPopulate(AttachedVariable, property, columnName);
                PropertiesMap[property] = columnName;
            }
        }
        internal override bool Populate(string property, string label = null)
        {
            if (property == null && label == null)
            {
                return(true);
            }
            switch (this.GetVariableType())
            {
            case GremlinVariableType.Vertex:
                if (GremlinUtil.IsEdgeProperty(property))
                {
                    return(false);
                }
                break;

            case GremlinVariableType.Edge:
                if (GremlinUtil.IsVertexProperty(property))
                {
                    return(false);
                }
                break;

            case GremlinVariableType.VertexProperty:
                if (GremlinUtil.IsVertexProperty(property) || GremlinUtil.IsEdgeProperty(property))
                {
                    return(false);
                }
                break;

            case GremlinVariableType.VertexAndEdge:
            case GremlinVariableType.Mixed:
            case GremlinVariableType.Unknown:
            case GremlinVariableType.NULL:
                break;

            default:
                return(false);
            }
            return(base.Populate(property, label));
        }
        internal override void Populate(string property)
        {
            if (ProjectedProperties.Contains(property))
            {
                return;
            }
            switch (GetVariableType())
            {
            case GremlinVariableType.Vertex:
                if (GremlinUtil.IsEdgeProperty(property))
                {
                    return;
                }
                break;

            case GremlinVariableType.Edge:
                if (GremlinUtil.IsVertexProperty(property))
                {
                    return;
                }
                break;

            case GremlinVariableType.VertexProperty:
                if (GremlinUtil.IsVertexProperty(property) || GremlinUtil.IsEdgeProperty(property))
                {
                    return;
                }
                break;

            case GremlinVariableType.Scalar:
            case GremlinVariableType.Property:
                if (property != GremlinKeyword.TableDefaultColumnName)
                {
                    return;
                }
                break;
            }
            base.Populate(property);
        }