// Generated by delombok at Sat Jun 11 11:12:44 CEST 2016

public class DataWithGeneric176<T> {
    private final T command;
    private final Runnable callback;

    public static void main(String[] args) {
        DataWithGeneric176<Integer> test = new DataWithGeneric176<Integer>(123, new Runnable() {
            @Override
            public void run() {
                System.out.println("Run");
            }
        });
        test.getCallback();
        System.out.println(test.getCommand());
        DataWithGeneric176<String> foo = DataWithGeneric176.of("fooqwqww", new Runnable() {
            public void run() {
            }
        });
        foo.getCallback();
        System.out.println(foo.getCommand());
    }

    @java.lang.SuppressWarnings("all")
    private DataWithGeneric176(final T command, final Runnable callback) {
        this.command = command;
        this.callback = callback;
    }

    @java.lang.SuppressWarnings("all")
    public static <T> DataWithGeneric176<T> of(final T command, final Runnable callback) {
        return new DataWithGeneric176<T>(command, callback);
    }

    @java.lang.SuppressWarnings("all")
    public T getCommand() {
        return this.command;
    }

    @java.lang.SuppressWarnings("all")
    public Runnable getCallback() {
        return this.callback;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    public boolean equals(final java.lang.Object o) {
        if (o == this) return true;
        if (!(o instanceof DataWithGeneric176)) return false;
        final DataWithGeneric176<?> other = (DataWithGeneric176<?>) o;
        if (!other.canEqual((java.lang.Object) this)) return false;
        final java.lang.Object this$command = this.getCommand();
        final java.lang.Object other$command = other.getCommand();
        if (this$command == null ? other$command != null : !this$command.equals(other$command)) return false;
        final java.lang.Object this$callback = this.getCallback();
        final java.lang.Object other$callback = other.getCallback();
        if (this$callback == null ? other$callback != null : !this$callback.equals(other$callback)) return false;
        return true;
    }

    @java.lang.SuppressWarnings("all")
    protected boolean canEqual(final java.lang.Object other) {
        return other instanceof DataWithGeneric176;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final java.lang.Object $command = this.getCommand();
        result = result * PRIME + ($command == null ? 43 : $command.hashCode());
        final java.lang.Object $callback = this.getCallback();
        result = result * PRIME + ($callback == null ? 43 : $callback.hashCode());
        return result;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    public java.lang.String toString() {
        return "DataWithGeneric176(command=" + this.getCommand() + ", callback=" + this.getCallback() + ")";
    }
}
