@Override
    public int hashCode() {
        int result = super.hashCode();
        if (null != this.concatTraversals) {
            for (final Traversal t : this.concatTraversals) {
                result = 31 * result + (null != t ? t.hashCode() : 0);
            }
        }
        if (null != this.concatStrings) {
            for (final String s : this.concatStrings) {
                result = 31 * result + (null != s ? s.hashCode() : 0);
            }
        }
        return result;
    }
Reference implementation for String concatenation step, a mid-traversal step which concatenates one or more
String values together to the incoming String traverser. If the incoming traverser is a non-String value then an
{@code IllegalArgumentException} will be thrown.

@author Yang Xia (http://github.com/xiazcy)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConcatStep.java