internal static GrapeMemberExpression Create(GrapeAccessExpressionType type, GrapeIdentifier identifier, GrapeAccessExpression next) {
			if (identifier == null) {
				throw new ArgumentNullException("identifier");
			}
			Debug.Assert((type == GrapeAccessExpressionType.Root) || (type == GrapeAccessExpressionType.Field));
			GrapeMemberExpression result = new GrapeMemberExpression(type, identifier, next);
			result.InitializeFromTemplate(identifier);
			return result;
		}
		protected GrapeMemberExpression(GrapeAccessExpressionType type, GrapeIdentifier identifier, GrapeAccessExpression next): base(next) {
			Debug.Assert(type != GrapeAccessExpressionType.Array);
			this.type = type;
			this.identifier = identifier;
		}