You'll have a loop in your evaluate method (look at other evaluate methods as a guide). Everything is an expression that you can evaluate (doesn't matter if it's a literal or any other expression. During evaluate, you have the Tuple which is used by column expression to look up the actual value. It'll look something like this:

    List<Expression> children = getChildren();
    int nChildren = children.size();
    for (int i = 0; i < nChildren; i++) {
        Expression child = children.get(i);
        if (!child.evaluate(tuple, ptr)) { // Can't evaluate, so return false
            return false;
        }
        Object o = getDataType().toObject(ptr, child.getDataType(), child.getColumnModifier());
        // Add to list of objects used to create array after end of for loop
    }