package me.tomassetti.symbolsolver.javaparser;

import java.util.Optional;
import java.util.List;

public final class Generics {

    Optional<String> s;
    Optional<Integer> i;
    Optional<Generics> g;

}

public final class SomeCollection<A> {

    public A a;
    public List<A> as;

    public void foo1(){
        new SomeCollection<String>().a;
    }

    public void foo2(){
        new SomeCollection<String>().as;
    }

}

public final class GenericMethodCalls {

    public class Base <T> {

        public void callee(T data) {
        }

        public T get() {
            return null;
        }

    }

    public class Derived extends Base<String> {

        public void caller() {
            callee("test");
            get();
        }

    }

}

public final class GenericMethodBoxing {

    public <T> T foo(T... t) {
        return null;
    }

    public void bar() {
        foo(5L);
    }

}