public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
if (contains(SubjectCallback.class, callbackHandler.getSupportedCallbacks())) {
Callback[] newCallbacks = new Callback[callbacks.length + 1];
System.arraycopy(callbacks, 0, newCallbacks, 0, callbacks.length);
SubjectCallback subjectCallBack = new SubjectCallback();
<BUG>newCallbacks[newCallbacks.length] = subjectCallBack;
</BUG>
callbackHandler.handle(newCallbacks);
subject = subjectCallBack.getSubject();
} else {

public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
if (contains(SubjectCallback.class, callbackHandler.getSupportedCallbacks())) {
Callback[] newCallbacks = new Callback[callbacks.length + 1];
System.arraycopy(callbacks, 0, newCallbacks, 0, callbacks.length);
SubjectCallback subjectCallBack = new SubjectCallback();
newCallbacks[newCallbacks.length - 1] = subjectCallBack;
callbackHandler.handle(newCallbacks);
subject = subjectCallBack.getSubject();
} else {
