code: public <T> Tuple appendLeft(T object) {
        if (degree() == 0) {
           return Tuple1.of(object);
        }
        Object[] copy = new Object[degree() + 1];
        System.arraycopy(array(), 0, copy, 1, degree());
        copy[0] = object;
        return NTuple.of(copy);
     }
docs: Appends an item the beginning of the tuple resulting in a new tuple of degree + 1
  
  @param <T>    the type parameter
  @param object the object being appended
  @return A new tuple of degree + 1 containing the object at the beginning