package org.erlide.common.util;
import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.erlide.common.util.Option;
@SuppressWarnings("all")
public class Some<T extends Object> extends Option<T> {
private final T obj;
public Some(final T obj) {
boolean _equals = Objects.equal(obj, null);
if (_equals) {
throw new IllegalArgumentException("Some cannot contain null. Use None instead.");
}
this.obj = obj;
}
@Override
public T get() {
return this.obj;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public Iterator<T> iterator() {
ArrayList<T> _arrayList = new ArrayList<T>();
final Procedure1<ArrayList<T>> _function = new Procedure1<ArrayList<T>>() {
@Override
public void apply(final ArrayList<T> it) {
it.add(Some.this.obj);
}
};
ArrayList<T> _doubleArrow = ObjectExtensions.<ArrayList<T>>operator_doubleArrow(_arrayList, _function);
return _doubleArrow.iterator();
}
@Override
public boolean equals(final Object o) {
boolean _and = false;
boolean _notEquals = (!Objects.equal(o, null));
if (!_notEquals) {
_and = false;
} else {
boolean _switchResult = false;
boolean _matched = false;
if (!_matched) {
if (o instanceof Some) {
_matched=true;
_switchResult = ((Some<T>)o).obj.equals(this.obj);
}
}
if (!_matched) {
_switchResult = false;
}
_and = _switchResult;
}
return _and;
}
@Override
public int hashCode() {
int _hashCode = this.obj.hashCode();
return (_hashCode + 31);
}
@Override
public String toString() {
return (("Some(" + this.obj) + ")");
}
}