This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch remove-queuing
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 070cb953b9afb13b3c6a21236cc9169d79a9b2d6
Author: Sven Meier <svenme...@apache.org>
AuthorDate: Wed Jun 2 23:06:39 2021 +0200

    removed queuing
---
 .../java/org/apache/wicket/ChildToDequeueType.java |   49 -
 .../java/org/apache/wicket/DequeueContext.java     |  301 ------
 .../java/org/apache/wicket/DequeueTagAction.java   |   27 -
 .../main/java/org/apache/wicket/IQueueRegion.java  |   61 --
 .../java/org/apache/wicket/MarkupContainer.java    |  348 ------
 .../src/main/java/org/apache/wicket/Page.java      |    3 +-
 .../apache/wicket/markup/html/border/Border.java   |  147 +--
 .../markup/html/form/FormComponentPanel.java       |    3 +-
 .../apache/wicket/markup/html/panel/Fragment.java  |   17 +-
 .../org/apache/wicket/markup/html/panel/Panel.java |   26 +-
 .../wicket/markup/repeater/AbstractRepeater.java   |   32 +-
 .../apache/wicket/BehavioursDetachTestPage.java    |    2 +-
 .../apache/wicket/OnComponentTagListenerTest.java  |    5 +-
 .../markup/html/border/BorderWithFormPage.java     |   40 -
 .../markup/html/border/ComponentBorderTest.java    |   24 -
 .../markup/html/internal/AjaxEnclosurePage_4.java  |    8 +-
 .../html/internal/ListViewInContainerPage.java     |    4 +-
 .../wicket/markupFragments/MarkupFragmentTest.java |    3 -
 .../queueing/ComponentQueueingPerformanceTest.java |  400 -------
 .../wicket/queueing/ComponentQueueingTest.java     | 1135 --------------------
 .../queueing/transparentresolvers/SubPage.java     |    2 +-
 .../TransparentContainerQueuePage.java             |    2 +-
 .../ajax/builtin/modal/ModalDialogPage.java        |   39 +-
 23 files changed, 42 insertions(+), 2636 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java 
b/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java
deleted file mode 100644
index 29cfdfe..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import org.apache.wicket.markup.html.border.Border;
-
-public enum ChildToDequeueType
-{
-       NULL, GENERIC_COMPONENT, MARKUP_CONTAINER, BORDER, QUEUE_REGION;
-       
-       public static ChildToDequeueType fromChild(Component child) 
-       {
-               if (child == null)
-               {
-                       return NULL;
-               }
-               
-               if (child instanceof Border)
-               {
-                       return BORDER;
-               }
-               
-               if (child instanceof IQueueRegion)
-               {
-                       return QUEUE_REGION;
-               }
-               
-               if (child instanceof MarkupContainer)
-               {
-                       return MARKUP_CONTAINER;
-               }
-               
-               return GENERIC_COMPONENT;
-       }
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java 
b/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
deleted file mode 100644
index 9c431e9..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import java.util.ArrayDeque;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
-import org.apache.wicket.markup.MarkupElement;
-
-/**
- * Context for component dequeueing. Keeps track of markup position and 
container stack.
- * 
- * @author igor
- *
- */
-public final class DequeueContext
-{
-       private final IMarkupFragment markup;
-       private int index;
-       private ComponentTag next;
-       private ArrayDeque<ComponentTag> tags = new ArrayDeque<>();
-       private final boolean skipFirst;
-       private ComponentTag first;
-
-       private ArrayDeque<MarkupContainer> containers = new ArrayDeque<>();
-
-       /** A bookmark for the DequeueContext stack */
-       public static final class Bookmark
-       {
-               private final int index;
-               private final ComponentTag next;
-               private final ArrayDeque<ComponentTag> tags;
-               private final ArrayDeque<MarkupContainer> containers;
-
-               private Bookmark(DequeueContext parser)
-               {
-                       this.index = parser.index;
-                       this.next = parser.next;
-                       this.tags = new ArrayDeque<>(parser.tags);
-                       this.containers = new ArrayDeque<>(parser.containers);
-               }
-
-               private void restore(DequeueContext parser)
-               {
-                       parser.index = index;
-                       parser.next = next;
-                       parser.tags = new ArrayDeque<>(tags);
-                       parser.containers = new ArrayDeque<>(containers);
-               }
-       }
-
-       public DequeueContext(IMarkupFragment markup, MarkupContainer root, 
boolean skipFirst)
-       {
-               this.markup = markup;
-               this.skipFirst = skipFirst;
-               this.containers.push(root);
-               this.next = nextTag();
-       }
-
-       /**
-        * Saves the state of the context into a bookmark which can later be 
used to restore it.
-        */
-       public Bookmark save()
-       {
-               return new Bookmark(this);
-       }
-
-       /**
-        * Restores the state of the context from the bookmark
-        * 
-        * @param bookmark
-        */
-       public void restore(Bookmark bookmark)
-       {
-               bookmark.restore(this);
-       }
-
-       /**
-        * Peeks markup tag that would be retrieved by call to {@link 
#takeTag()}
-        * 
-        * @return
-        */
-       public ComponentTag peekTag()
-       {
-               return next;
-       }
-
-       /**
-        * Retrieves the next markup tag
-        * 
-        * @return
-        */
-       public ComponentTag takeTag()
-       {
-               ComponentTag taken = next;
-
-               if (taken == null)
-               {
-                       return null;
-               }
-
-               if (taken.isOpen() && !taken.hasNoCloseTag())
-               {
-                       tags.push(taken);
-               }
-               else if (tags.size() > 0 && taken.closes(tags.peek()))
-               {
-                       tags.pop();
-               }
-               next = nextTag();
-               return taken;
-       }
-
-       /**
-        * Skips to the closing tag of the tag retrieved from last call to 
{@link #takeTag()}
-        */
-       public void skipToCloseTag()
-       {
-               while (!next.closes(tags.peek()))
-               {
-                       next = nextTag();
-               }
-       }
-
-       private ComponentTag nextTag()
-       {
-               if (skipFirst && first == null)
-               {
-                       for (; index < markup.size(); index++)
-                       {
-                               MarkupElement element = markup.get(index);
-                               if (element instanceof ComponentTag)
-                               {
-                                       first = (ComponentTag)element;
-                                       index++;
-                                       break;
-                               }
-                       }
-               }
-
-               for (; index < markup.size(); index++)
-               {
-                       MarkupElement element = markup.get(index);
-                       if (element instanceof ComponentTag)
-                       {
-                               ComponentTag tag = (ComponentTag)element;
-
-                               if (tag.isOpen() || tag.isOpenClose())
-                               {
-                                       DequeueTagAction action = 
canDequeueTag(tag);
-                                       switch (action)
-                                       {
-                                               case IGNORE :
-                                                       continue;
-                                               case DEQUEUE :
-                                                       index++;
-                                                       return tag;
-                                               case SKIP : // skip to close tag
-                                                       boolean found = false;
-                                                       for (; index < 
markup.size(); index++)
-                                                       {
-                                                               if 
((markup.get(index) instanceof ComponentTag)
-                                                                       && 
markup.get(index).closes(tag))
-                                                               {
-                                                                       found = 
true;
-                                                                       break;
-                                                               }
-                                                       }
-                                                       if (!found)
-                                                       {
-                                                               throw new 
IllegalStateException(String.format(
-                                                                       "Could 
not find close tag for tag '%s' in markup: %s ", tag,
-                                                                       
markup));
-                                                       }
-
-                                       }
-                               }
-                               else
-                               {
-                                       // closed tag
-                                       ComponentTag open = tag.isClose() ? 
tag.getOpenTag() : tag;
-
-                                       if (skipFirst && first != null && open 
== first)
-                                       {
-                                               continue;
-                                       }
-
-                                       switch (canDequeueTag(open))
-                                       {
-                                               case DEQUEUE :
-                                                       index++;
-                                                       return tag;
-                                               case IGNORE :
-                                                       continue;
-                                               case SKIP :
-                                                       throw new 
IllegalStateException(String.format(
-                                                               "Should not see 
closed tag of skipped open tag '%s' in markup:%s",
-                                                               tag, markup));
-                                       }
-                               }
-                       }
-               }
-               return null;
-       }
-
-       private DequeueTagAction canDequeueTag(ComponentTag open)
-       {
-               if (containers.size() < 1)
-               {
-                       // TODO queueing message: called too early
-                       throw new IllegalStateException();
-               }
-
-               DequeueTagAction action;
-               for (MarkupContainer container : containers)
-               {
-                       action = container.canDequeueTag(open);
-                       if (action != null)
-                       {
-                               return action;
-                       }
-               }
-               return DequeueTagAction.IGNORE;
-       }
-
-       /**
-        * Checks if the tag returned by {@link #peekTag()} is either open or 
open-close.
-        * 
-        * @return
-        */
-       public boolean isAtOpenOrOpenCloseTag()
-       {
-               ComponentTag tag = peekTag();
-               return tag != null && (tag.isOpen() || tag.isOpenClose());
-       }
-
-       /**
-        * Retrieves the container on the top of the containers stack
-        * 
-        * @return
-        */
-       public MarkupContainer peekContainer()
-       {
-               return containers.peek();
-       }
-
-       /**
-        * Pushes a container onto the container stack
-        * 
-        * @param container
-        */
-       public void pushContainer(MarkupContainer container)
-       {
-               containers.push(container);
-       }
-
-       /**
-        * Pops a container from the container stack
-        * 
-        * @return
-        */
-       public MarkupContainer popContainer()
-       {
-               return containers.pop();
-       }
-
-       /**
-        * Searches the container stack for a component that can be dequeude
-        * 
-        * @param tag
-        * @return
-        */
-       public Component findComponentToDequeue(ComponentTag tag)
-       {
-               for (MarkupContainer container : containers)
-               {
-                       Component child = container.findComponentToDequeue(tag);
-                       if (child != null)
-                       {
-                               return child;
-                       }
-               }
-               return null;
-       }
-
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java 
b/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java
deleted file mode 100644
index 461cac4..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-public enum DequeueTagAction
-{
-       /** dequeue the tag */
-       DEQUEUE,
-       /** skip this tag and all its children */
-       SKIP,
-       /** ignore this tag, skip it but do not skip its children */
-       IGNORE;
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java 
b/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java
deleted file mode 100644
index b6ef154..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import org.apache.wicket.markup.IMarkupFragment;
-
-
-/**
- * Demarcates components that act as a root can dequeue children. These are 
usually components with
- * associated markup since the markup is needed to dequeue.
- * 
- * It is also important to note that components queued outside of a region 
cannot be dequeued into
- * it since regions act as roots for the dequeue process because they contain 
the markup. As such,
- * for example, a component queued in a page cannot be dequeued into a page 
child that is a panel
- * because a panel is an {@link IQueueRegion}.
- * 
- * @author igor
- * 
- */
-public interface IQueueRegion
-{
-       /**
-        * Creates a new {@link DequeueContext} that will be used to dequeue 
children of this region.
-        * 
-        * Usually containers will create a context with their associated 
markup by getting it via
-        * {@link MarkupContainer#getAssociatedMarkup()}, but components that 
do not render markup in a
-        * standard way (such as repeaters and borders) may choose to override 
this method to implement
-        * custom behavior for the dequeueing process.
-        */
-       DequeueContext newDequeueContext();
-
-       /**
-        * Starts component dequeueing on this {@link IQueueRegion}. This is 
the entry point into the
-        * dequeuing process, it creates the {@link DequeueContext} and 
delegates the operation to the
-        * {@link org.apache.wicket.MarkupContainer#dequeue(DequeueContext)} 
method which performs the
-        * actual dequeueing. The context's markup is retrieved using the 
{@link MarkupContainer#getAssociatedMarkup()}.
-        */
-       void dequeue();
-       
-       /**
-        * Returns the markup to use for queuing. Normally, this is the markup 
of the component 
-        * implementing this interface.
-        * 
-        * @return the markup to use for queuing
-        */
-       IMarkupFragment getRegionMarkup();
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java 
b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index e095319..007593a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -35,7 +35,6 @@ import org.apache.commons.collections4.map.LinkedMap;
 import org.apache.wicket.behavior.OutputMarkupContainerClassNameBehavior;
 import org.apache.wicket.core.util.string.ComponentStrings;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.ComponentTag.IAutoComponentFactory;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.Markup;
 import org.apache.wicket.markup.MarkupElement;
@@ -46,7 +45,6 @@ import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.MarkupType;
 import org.apache.wicket.markup.WicketTag;
 import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.markup.html.form.AutoLabelResolver;
 import org.apache.wicket.markup.resolver.ComponentResolvers;
 import org.apache.wicket.model.IComponentInheritedModel;
 import org.apache.wicket.model.IModel;
@@ -1780,186 +1778,6 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
 
                modCounter++;
                removals_clear();
-
-               if (queue != null && !queue.isEmpty() && hasBeenRendered())
-               {
-                       throw new WicketRuntimeException(
-                                       String.format("Detach called on 
component with id '%s' while it had a non-empty queue: %s",
-                                                       getId(), queue));
-               }
-       }
-
-       private transient ComponentQueue queue;
-
-       /**
-        * Queues one or more components to be dequeued later. The advantage of 
this method over the
-        * {@link #add(Component...)} method is that the component does not 
have to be added to its
-        * direct parent, only to a parent upstream; it will be dequeued into 
the correct parent using
-        * the hierarchy defined in the markup. This allows the component 
hierarchy to be maintained only
-        * in markup instead of in markup and in java code; affording designers 
and developers more
-        * freedom when moving components in markup.
-        * 
-        * @param components
-        *             the components to queue
-        * @return {@code this} for method chaining             
-        */
-       public MarkupContainer queue(Component... components)
-       {
-               if (queue == null)
-               {
-                       queue = new ComponentQueue();
-               }
-               queue.add(components);
-               
-               Page page = findPage();
-
-               if (page != null)
-               {
-                       dequeue();                      
-               }
-
-               return this;
-       }
-
-       /**
-        * @see IQueueRegion#dequeue()
-        */
-       public void dequeue()
-       {
-               if (this instanceof IQueueRegion)
-               {
-                       DequeueContext dequeue = newDequeueContext();
-                       dequeuePreamble(dequeue);
-               }
-               else
-               {
-                       MarkupContainer queueRegion = 
(MarkupContainer)findParent(IQueueRegion.class);
-
-                       if (queueRegion == null)
-                       {
-                               return;
-                       }
-                       
-                       MarkupContainer anchestor = this;
-                       boolean hasQueuedChildren = !isQueueEmpty();
-                       
-                       while (!hasQueuedChildren && anchestor != queueRegion)
-                       {
-                               anchestor = anchestor.getParent();
-                               hasQueuedChildren = !anchestor.isQueueEmpty();
-                       }
-                       
-                       if (hasQueuedChildren && 
!queueRegion.getRequestFlag(RFLAG_CONTAINER_DEQUEING))
-                       {
-                               queueRegion.dequeue();
-                       }
-               }
-       }
-
-       @Override
-       protected void onInitialize()
-       {
-               super.onInitialize();
-               dequeue();
-       }
-       /**
-        * @return {@code true} when one or more components are queued
-        */
-       private boolean isQueueEmpty()
-       {
-               return queue == null || queue.isEmpty();
-       }
-
-       /**
-        * @return {@code true} when this markup container is a queue region
-        */
-       private boolean isQueueRegion() 
-       {
-               return IQueueRegion.class.isInstance(this);
-       }
-
-       /**
-        * Run preliminary operations before running {@link 
#dequeue(DequeueContext)}. More in detail it
-        * throws an exception if the container is already dequeuing, and it 
also takes care of setting
-        * flag {@code RFLAG_CONTAINER_DEQUEING} to true before running {@link 
#dequeue(DequeueContext)}
-        * and setting it back to false after dequeuing is completed.
-        * 
-        * @param dequeue
-        *            the dequeue context to use
-        */
-       protected void dequeuePreamble(DequeueContext dequeue)
-       {
-               if (getRequestFlag(RFLAG_CONTAINER_DEQUEING))
-               {
-                       throw new IllegalStateException("This container is 
already dequeing: " + this);
-               }
-
-               setRequestFlag(RFLAG_CONTAINER_DEQUEING, true);
-               try
-               {
-                       if (dequeue == null)
-                       {
-                               return;
-                       }
-
-                       if (dequeue.peekTag() != null)
-                       {
-                               dequeue(dequeue);
-                       }
-               }
-               finally
-               {
-                       setRequestFlag(RFLAG_CONTAINER_DEQUEING, false);
-               }
-       }
-
-       /**
-        * Dequeues components. The default implementation iterates direct 
children of this container
-        * found in its markup and tries to find matching
-        * components in queues filled by a call to {@link 
#queue(Component...)}. It then delegates the
-        * dequeueing to these children.
-        * 
-        * 
-        * Certain components that implement custom markup behaviors (such as 
repeaters and borders)
-        * override this method to bring dequeueing in line with their custom 
markup handling.
-        * 
-        * @param dequeue
-        *             the dequeue context to use     
-        */
-       public void dequeue(DequeueContext dequeue)
-       {
-               while (dequeue.isAtOpenOrOpenCloseTag())
-               {
-                       ComponentTag tag = dequeue.takeTag();
-       
-                       // see if child is already added to parent
-                       Component child = findChildComponent(tag);
-
-                       if (child == null)
-                       {
-                               // the container does not yet have a child with 
this id, see if we can
-                               // dequeue
-                               child = dequeue.findComponentToDequeue(tag);
-                               
-                               //if tag has an autocomponent factory let's use 
it
-                               if (child == null && 
tag.getAutoComponentFactory() != null)
-                               {
-                                       IAutoComponentFactory 
autoComponentFactory = tag.getAutoComponentFactory();
-                                       child = 
autoComponentFactory.newComponent(this, tag);
-                               }
-                               
-                               if (child != null)
-                               {
-                                       addDequeuedComponent(child, tag);
-                               }
-                       }
-                       
-                       if (tag.isOpen() && !tag.hasNoCloseTag())
-            {
-                           dequeueChild(child, tag, dequeue);
-            }
-               }
-
        }
 
        /**
@@ -1975,172 +1793,6 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
        }
        
        /**
-        * Propagates dequeuing to child component.
-        * 
-        * @param child
-        *             the child component
-        * @param tag
-        *             the child tag
-        * @param dequeue
-        *             the dequeue context to use
-        */
-       private void dequeueChild(Component child, ComponentTag tag, 
DequeueContext dequeue)
-       {
-               ChildToDequeueType childType = 
ChildToDequeueType.fromChild(child);
-               
-               if (childType == ChildToDequeueType.QUEUE_REGION ||
-                       childType == ChildToDequeueType.BORDER)
-               {
-                       ((IQueueRegion)child).dequeue();                        
-               }
-               
-               if (childType == ChildToDequeueType.BORDER) 
-               {
-            Border childContainer = (Border)child;
-            // propagate dequeuing to border's body
-            MarkupContainer body = childContainer.getBodyContainer();
-
-            dequeueChildrenContainer(dequeue, body);
-               }
-               
-               if (childType == ChildToDequeueType.MARKUP_CONTAINER)
-               {
-            // propagate dequeuing to containers
-            MarkupContainer childContainer = (MarkupContainer)child;
-
-            dequeueChildrenContainer(dequeue, childContainer);                 
-               }
-               
-               if (childType == ChildToDequeueType.NULL || 
-                       childType == ChildToDequeueType.QUEUE_REGION)
-               {
-                       dequeue.skipToCloseTag();
-               }
-
-               // pull the close tag off
-               ComponentTag close = dequeue.takeTag();
-               do
-               {
-                       if (close != null && close.closes(tag))
-                       {
-                               return;
-                       }
-               } while ((close = dequeue.takeTag()) != null);
-
-               throw new IllegalStateException(String.format("Could not find 
the closing tag for '%s'", tag));
-       }
-
-    private void dequeueChildrenContainer(DequeueContext dequeue, 
MarkupContainer child)
-    {
-        dequeue.pushContainer(child);
-        child.dequeue(dequeue);
-        dequeue.popContainer();
-    }
-
-    /** @see IQueueRegion#newDequeueContext() */
-       public DequeueContext newDequeueContext()
-       {
-               IMarkupFragment markup = getRegionMarkup();
-               if (markup == null)
-               {
-                       return null;
-               }
-
-               return new DequeueContext(markup, this, false);
-       }
-
-       /** @see IQueueRegion#getRegionMarkup() */
-       public IMarkupFragment getRegionMarkup()
-       {
-               return getAssociatedMarkup();
-       }
-
-       /**
-        * Checks if this container can dequeue a child represented by the 
specified tag. This method
-        * should be overridden when containers can dequeue components 
represented by non-standard tags.
-        * For example, borders override this method and dequeue their body 
container when processing
-        * the body tag.
-        * 
-        * By default all {@link ComponentTag}s are supported as well as {@link 
WicketTag}s that return
-        * a non-null value from {@link WicketTag#getAutoComponentFactory()} 
method.
-        * 
-        * @param tag
-        */
-       protected DequeueTagAction canDequeueTag(ComponentTag tag)
-       {
-               if (tag instanceof WicketTag)
-               {
-                       WicketTag wicketTag = (WicketTag)tag;
-                       if (wicketTag.isContainerTag())
-                       {
-                               return DequeueTagAction.DEQUEUE;
-                       }
-                       else if (wicketTag.getAutoComponentFactory() != null)
-                       {
-                               return DequeueTagAction.DEQUEUE;
-                       }
-                       else if (wicketTag.isFragmentTag())
-                       {
-                               return DequeueTagAction.SKIP;
-                       }
-                       else if (wicketTag.isChildTag())
-                       {
-                               return DequeueTagAction.IGNORE;
-                       }
-                       else if (wicketTag.isHeadTag())
-                       {
-                               return DequeueTagAction.SKIP;
-                       }
-                       else if (wicketTag.isLinkTag())
-                       {
-                               return DequeueTagAction.DEQUEUE;
-                       }
-                       else
-                       {
-                               return null; // don't know
-                       }
-               }
-               
-               //if is a label tag, ignore it
-               if (tag.isAutoComponentTag() 
-                       && tag.getId().startsWith(AutoLabelResolver.LABEL_ATTR))
-               {
-                       return DequeueTagAction.IGNORE;
-               }
-               
-               return DequeueTagAction.DEQUEUE;
-       }
-
-       /**
-        * Queries this container to find a child that can be dequeued that 
matches the specified tag.
-        * The default implementation will check if there is a component in the 
queue that has the same
-        * id as a tag, but sometimes custom tags can be dequeued and in those 
situations this method
-        * should be overridden.
-        * 
-        * @param tag
-        * @return
-        */
-       public Component findComponentToDequeue(ComponentTag tag)
-       {
-               return queue == null ? null : queue.remove(tag.getId());
-       }
-
-       /**
-        * Adds a dequeued component to this container. This method should 
rarely be overridden because
-        * the common case of simply forwarding the component to
-        * {@link MarkupContainer#add(Component...)} method should cover most 
cases. Components that
-        * implement a custom hierarchy, such as borders, may wish to override 
it to support edge-case
-        * non-standard behavior.
-        * 
-        * @param component
-        * @param tag
-        */
-       protected void addDequeuedComponent(Component component, ComponentTag 
tag)
-       {
-               add(component);
-       }
-
-       /**
         * Returns a sequential {@code Stream} with the direct children of this 
markup container as its
         * source. This stream doesn't traverse the component tree.
         *
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java 
b/wicket-core/src/main/java/org/apache/wicket/Page.java
index d204335..180bc54 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -84,8 +84,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class Page extends MarkupContainer
        implements
-               IRequestablePage,
-               IQueueRegion
+               IRequestablePage
 {
        /** True if the page hierarchy has been modified in the current 
request. */
        private static final int FLAG_IS_DIRTY = FLAG_RESERVED3;
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
index 1feea65..b36f3e5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
@@ -17,9 +17,6 @@
 package org.apache.wicket.markup.html.border;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.DequeueTagAction;
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupFragment;
@@ -28,8 +25,6 @@ import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupFragment;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.TagUtils;
-import org.apache.wicket.markup.WicketTag;
-import org.apache.wicket.markup.html.MarkupUtil;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.BorderMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
@@ -137,7 +132,7 @@ import org.apache.wicket.util.lang.Args;
  * @author Jonathan Locke
  * @author Juergen Donnerstag
  */
-public abstract class Border extends WebMarkupContainer implements 
IComponentResolver, IQueueRegion
+public abstract class Border extends WebMarkupContainer implements 
IComponentResolver
 {
        private static final long serialVersionUID = 1L;
 
@@ -166,7 +161,7 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
                super(id, model);
 
                body = new BorderBodyContainer(id + "_" + BODY);
-               queueToBorder(body);
+               addToBorder(body);
        }
        
        /**
@@ -313,33 +308,6 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
                return this;
        }
 
-       @Override
-       public Border queue(Component... components)
-       {
-               getBodyContainer().queue(components);
-               return this;
-       }
-       
-       @Override
-       protected void onConfigure() 
-       {
-               super.onConfigure();
-               dequeue();
-       }
-       
-       /**
-        * Queues children components to the Border itself
-        *
-        * @param children
-        *            the children components to queue
-        * @return this
-        */
-       public Border queueToBorder(final Component... children)
-       {
-               super.queue(children);
-               return this;
-       }
-
        /**
         * Removes child from the Border itself
         * 
@@ -455,7 +423,7 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
        /**
         * The container to be associated with the &lt;wicket:body&gt; tag
         */
-       public class BorderBodyContainer extends WebMarkupContainer implements 
IQueueRegion
+       public class BorderBodyContainer extends WebMarkupContainer
        {
                private static final long serialVersionUID = 1L;
 
@@ -592,112 +560,5 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
 
                        return markup.find(child.getId());
                }
-
-               @Override
-               public DequeueContext newDequeueContext()
-               {
-                       Border border = findParent(Border.class);
-                       IMarkupFragment fragment = border.getMarkup();
-
-                       if (fragment == null)
-                       {
-                               return null;
-                       }
-
-                       return new DequeueContext(fragment, this, true);
-               }
-
-               @Override
-               public Component findComponentToDequeue(ComponentTag tag)
-               {
-                       /*
-                        * the body container is allowed to search for queued 
components all
-                        * the way to the page even though it is an 
IQueueRegion so it can
-                        * find components queued below the border
-                        */
-
-                       Component component = super.findComponentToDequeue(tag);
-                       if (component != null)
-                       {
-                               return component;
-                       }
-
-                       MarkupContainer cursor = getParent();
-                       while (cursor != null)
-                       {
-                               component = cursor.findComponentToDequeue(tag);
-                               if (component != null)
-                               {
-                                       return component;
-                               }
-                               if (cursor instanceof BorderBodyContainer)
-                               {
-                                       // optimization - find call above 
would've already recursed
-                                       // to page
-                                       break;
-                               }
-                               cursor = cursor.getParent();
-                       }
-                       return null;
-               }
-       }
-
-       @Override
-       protected DequeueTagAction canDequeueTag(ComponentTag tag)
-       {
-               if (canDequeueBody(tag))
-               {
-                       return DequeueTagAction.DEQUEUE;
-               }
-
-               return super.canDequeueTag(tag);
-       }
-
-       @Override
-       public Component findComponentToDequeue(ComponentTag tag)
-       {
-               if (canDequeueBody(tag))
-               {
-                       //synch the tag id with the one of the body component
-                       tag.setId(body.getId());
-               }
-               
-               return super.findComponentToDequeue(tag);
-       }
-
-       private boolean canDequeueBody(ComponentTag tag)
-       {
-               boolean isBodyTag = (tag instanceof WicketTag) && 
((WicketTag)tag).isBodyTag();
-               
-               return isBodyTag;
-       }
-
-       @Override
-       protected void addDequeuedComponent(Component component, ComponentTag 
tag)
-       {
-               // components queued in border get dequeued into the border not 
into the body container
-               super.add(component);
-       }
-       
-       /**
-        * Returns the markup inside &lt;wicket:border&gt; tag.
-        * If such tag is not found, all the markup is returned.
-        * 
-        * @see IQueueRegion#getRegionMarkup() 
-        */
-       @Override
-       public IMarkupFragment getRegionMarkup()
-       {
-               IMarkupFragment markup = super.getRegionMarkup();
-               
-               if (markup == null)
-               {
-                       return markup;
-               }
-               
-               IMarkupFragment borderMarkup = MarkupUtil.findStartTag(markup, 
BORDER);
-               
-               return borderMarkup != null ? borderMarkup : markup;
        }
-       
-}
+}
\ No newline at end of file
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
index 5fe284f..b8b661b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.markup.html.form;
 
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
@@ -109,7 +108,7 @@ import org.apache.wicket.util.visit.IVisitor;
  * @param <T>
  *            The model object type
  */
-public abstract class FormComponentPanel<T> extends FormComponent<T> 
implements IQueueRegion
+public abstract class FormComponentPanel<T> extends FormComponent<T>
 {
        private static final long serialVersionUID = 1L;
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
index 25e9b10..3b3ae58 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
@@ -17,8 +17,6 @@
 package org.apache.wicket.markup.html.panel;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -48,7 +46,7 @@ import org.apache.wicket.util.lang.Args;
  * 
  * @author Juergen Donnerstag
  */
-public class Fragment extends WebMarkupContainer implements IQueueRegion
+public class Fragment extends WebMarkupContainer
 {
        private static final long serialVersionUID = 1L;
 
@@ -131,17 +129,4 @@ public class Fragment extends WebMarkupContainer 
implements IQueueRegion
        {
                return associatedMarkupId;
        }
-
-
-       @Override
-       public DequeueContext newDequeueContext()
-       {
-               IMarkupFragment markup = 
getMarkupSourcingStrategy().getMarkup(this, null);
-               if (markup == null)
-               {
-                       return null;
-               }
-
-               return new DequeueContext(markup, this, true);
-       }
 }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
index 1520c07..7926b99 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.markup.html.panel;
 
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.MarkupUtil;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -52,7 +51,7 @@ import org.apache.wicket.model.IModel;
  * @author Jonathan Locke
  * @author Juergen Donnerstag
  */
-public abstract class Panel extends WebMarkupContainer implements IQueueRegion
+public abstract class Panel extends WebMarkupContainer
 {
        private static final long serialVersionUID = 1L;
 
@@ -83,25 +82,4 @@ public abstract class Panel extends WebMarkupContainer 
implements IQueueRegion
        {
                return new PanelMarkupSourcingStrategy(false);
        }
-       
-       /**
-        * Returns the markup inside &lt;wicket:panel&gt; tag.
-        * If such tag is not found, all the markup is returned.
-        * 
-        * @see IQueueRegion#getRegionMarkup() 
-        */
-       @Override
-       public IMarkupFragment getRegionMarkup()
-       {
-               IMarkupFragment markup = super.getRegionMarkup();
-               
-               if (markup == null)
-               {
-                       return markup;
-               }
-               
-               IMarkupFragment panelMarkup = MarkupUtil.findStartTag(markup, 
PANEL);
-               
-               return panelMarkup != null ? panelMarkup : markup;
-       }
-}
+}
\ No newline at end of file
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
index 25e320a..3ea03ea 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
@@ -21,9 +21,6 @@ import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.DequeueContext.Bookmark;
-import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
@@ -158,31 +155,4 @@ public abstract class AbstractRepeater extends 
WebMarkupContainer
         */
        protected abstract void onPopulate();
 
-       @Override
-       public void dequeue(DequeueContext dequeue)
-       {
-               if (size() > 0)
-               {
-                       // essentially what we do is for every child replace 
the repeater with the child in
-                       // dequeue container stack and run the dequeue on the 
child. we also take care to reset
-                       // the state of the dequeue context after we process 
every child.
-
-                       Bookmark bookmark = dequeue.save();
-
-                       for (Component child : this)
-                       {
-                               if (child instanceof MarkupContainer)
-                               {
-                                       dequeue.popContainer(); // pop the 
repeater
-                                       MarkupContainer container = 
(MarkupContainer) child;
-                                       dequeue.pushContainer(container);
-                                       container.dequeue(dequeue);
-                                       dequeue.restore(bookmark);
-                               }
-                       }
-               }
-
-               dequeue.skipToCloseTag();
-
-       }
-}
+}
\ No newline at end of file
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java 
b/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
index 82b8f73..75b2923 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
@@ -39,7 +39,7 @@ public class BehavioursDetachTestPage extends WebPage {
             @Override
             public void onClick() {/*NoOp*/}
         };
-        queue(link);
+        add(link);
 
         // A behavior that causes the problem
         link.add(new VisibilityBehavior());
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java 
b/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
index 0a588a0..1c57571 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
@@ -102,13 +102,14 @@ class OnComponentTagListenerTest extends WicketTestCase {
        static class TestPage extends WebPage implements 
IMarkupResourceStreamProvider {
                private static final long serialVersionUID = 1L;
 
-               private Component c1, c2, c3;
+               private WebMarkupContainer c1, c2, c3;
 
                TestPage() {
                        c1 = new WebMarkupContainer("c1");
                        c2 = new WebMarkupContainer("c2");
                        c3 = new WebMarkupContainer("c3");
-                       queue(c1, c2, c3);
+                       add(c1, c3);
+                       c1.add(c2);
                }
 
                @Override
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java
deleted file mode 100644
index e48567c..0000000
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.markup.html.border;
-
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IModel;
-
-public class BorderWithFormPage extends WebPage {
-       private static final long serialVersionUID = 1L;
-       private TextField<String> field;
-
-       public BorderWithFormPage(IModel<String> model) {
-               super();
-               
-               WebMarkupContainer container = new 
WebMarkupContainer("borderContainer");
-               
-               BorderWithForm border = new BorderWithForm("formBorder");
-               
-               border.add(field = new TextField<>("text", model));
-               
-               container.add(border);
-               add(container);
-    }
-}
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
index 51c1f63..b805762 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
@@ -89,30 +89,6 @@ class ComponentBorderTest extends WicketTestCase
        }
 
        @Test
-       void borderWithForm() throws Exception
-       {
-               /*
-                * Suppose we have a border like this:
-                * 
-                * <div wicket:id="border"> <form> <body/> </form> </div>
-                * 
-                * Any form components inside its body must be correctly 
submitted with the outer form.
-                */
-               Model<String> model = Model.of("");
-               BorderWithFormPage page = new BorderWithFormPage(model);
-
-               tester.startPage(page);
-
-               FormTester formTester = tester
-                       
.newFormTester("borderContainer:formBorder:borderContainer:form");
-
-               formTester.setValue("formBorder_body:text", TEST_TEXT);
-               formTester.submit();
-
-               assertEquals(TEST_TEXT, model.getObject());
-       }
-
-       @Test
        void borderWithEnclosurePage() throws Exception
        {
                tester.startPage(BorderWithEnclosurePage.class);
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
index bdeb27d..51fec72 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
@@ -17,10 +17,8 @@
 package org.apache.wicket.markup.html.internal;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.PropertyModel;
@@ -49,14 +47,14 @@ public class AjaxEnclosurePage_4 extends WebPage
        {
 
                Form<?> form=new Form<Void>("form");
-               queue(form);
+               add(form);
                
                //nameLabel=new Label("nameLabel", "Name");
                //queue(nameLabel);
                
                nameField=new TextField<String>("nameField", new 
PropertyModel<String>(this, "name"));
                nameField.setOutputMarkupId(true);
-               queue(nameField);
+               form.add(nameField);
 
                submit=new AjaxSubmitLink("submit") {
                        @Override
@@ -66,7 +64,7 @@ public class AjaxEnclosurePage_4 extends WebPage
                                target.add(nameField);
                        }
                };
-               queue(submit);
+               form.add(submit);
                
        }
 
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
index cb9787f..ee38514 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
@@ -50,10 +50,10 @@ public class ListViewInContainerPage extends BasePage
                        protected void populateItem(final ListItem<Integer> 
item)
                        {
                                final Label testenc = new Label("testenc", 
Model.of("enclosure " + item.getModelObject()));
-                               item.queue(testenc);
+                               item.add(testenc);
 
                                final Label testlib = new Label("testlib", 
Model.of("no enclosure " + item.getModelObject()));
-                               item.queue(testlib);
+                               item.add(testlib);
                        }
                });
     }
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
index 1a2a86f..78c54d4 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
@@ -180,7 +180,6 @@ class MarkupFragmentTest extends WicketTestCase
 
                assertNull(border.getBodyContainer().getAssociatedMarkup());
 
-               border.dequeue();
                markup = border.getBodyContainer().getMarkup();
                compareMarkupWithString(markup, "<wicket:body/>");
 
@@ -220,8 +219,6 @@ class MarkupFragmentTest extends WicketTestCase
 
                assertNull(border.getBodyContainer().getAssociatedMarkup());
 
-               // See explanation in BaseBorder.BorderBodyContainer.getMarkup()
-               border.dequeue();
                markup = 
border.getBodyContainer().getParent().getMarkup(border.getBodyContainer());
                compareMarkupWithString(markup, 
"<wicket:body>333</wicket:body>");
 
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java
deleted file mode 100644
index 722478e..0000000
--- 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.queueing;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.IMarkupResourceStreamProvider;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.RefreshingView;
-import org.apache.wicket.markup.repeater.util.ModelIteratorAdapter;
-import org.apache.wicket.mock.MockApplication;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.WicketTestTag;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.jupiter.api.Tag;
-import org.junit.jupiter.api.Test;
-
-@Tag(WicketTestTag.SLOW)
-public class ComponentQueueingPerformanceTest extends WicketTestCase
-{
-       private void run(Class<? extends Page> pageClass)
-       {
-               WicketTester tester = new WicketTester(new MockApplication());
-               try
-               {
-                       tester.startPage(pageClass);
-               }
-               finally
-               {
-                       tester.destroy();
-               }
-       }
-
-       @Test
-       void performance()
-       {
-               final int warmup = 30;
-               final int performance = 60;
-
-               tester.startPage(AddContactsPage.class);
-
-               for (int i = 0; i < warmup; i++)
-               {
-                       run(AddContactsPage.class);
-               }
-               long start = System.currentTimeMillis();
-               for (int i = 0; i < performance; i++)
-               {
-                       run(AddContactsPage.class);
-               }
-               long end = System.currentTimeMillis();
-               long addDuration = end - start;
-
-               for (int i = 0; i < warmup; i++)
-               {
-                       run(QueueContactsPage.class);
-               }
-               start = System.currentTimeMillis();
-               for (int i = 0; i < performance; i++)
-               {
-                       run(QueueContactsPage.class);
-               }
-               end = System.currentTimeMillis();
-               long queueDuration = end - start;
-
-
-               System.out.println("add duration: " + addDuration + " queue 
duration: " + queueDuration);
-
-       }
-
-
-       @Test
-       void consistency()
-       {
-               tester.startPage(new QueueContactsPage());
-               String queue = tester.getLastResponseAsString();
-               tester.startPage(new AddContactsPage());
-               String add = tester.getLastResponseAsString();
-               assertEquals(queue, add);
-       }
-
-       private static class PhoneNumber
-       {
-               String id = UUID.randomUUID().toString();
-               String areacode = "234";
-               String prefix = "342";
-               String suffix = "3423";
-       }
-
-       private static class Address
-       {
-               String id = UUID.randomUUID().toString();
-               String street = "2343 Jsdfjsf St.";
-               String city = "Ksdfjsfs";
-               String state = "AS";
-               String zipcode = "32434";
-       }
-
-       private static class Contact
-       {
-               String id = UUID.randomUUID().toString();
-               String first = "Jlkjsf";
-               String last = "Kjwieojkjf";
-               Address address = new Address();
-               PhoneNumber work = new PhoneNumber();
-               PhoneNumber cell = new PhoneNumber();
-
-       }
-
-       private static Store store = new Store();
-
-       private static class Store
-       {
-               Map<String, PhoneNumber> phones = new HashMap<String, 
PhoneNumber>();
-               Map<String, Address> addresses = new HashMap<String, Address>();
-               Map<String, Contact> contacts = new HashMap<String, Contact>();
-
-               public <T> T get(Class<T> clazz, String id)
-               {
-                       if (PhoneNumber.class.equals(clazz))
-                       {
-                               return (T)phones.get(id);
-                       }
-                       else if (Address.class.equals(clazz))
-                       {
-                               return (T)addresses.get(id);
-                       }
-                       else if (Contact.class.equals(clazz))
-                       {
-                               return (T)contacts.get(id);
-                       }
-                       throw new RuntimeException();
-               }
-
-               Store()
-               {
-                       for (int i = 0; i < 250; i++)
-                       {
-                               Contact contact = new Contact();
-                               contacts.put(contact.id, contact);
-                       }
-               }
-
-       }
-
-       private static class ContactModel extends 
LoadableDetachableModel<Contact>
-       {
-               private String id;
-
-               ContactModel(Contact contact)
-               {
-                       super(contact);
-                       this.id = contact.id;
-               }
-
-               @Override
-               protected Contact load()
-               {
-                       return store.contacts.get(id);
-               }
-
-       }
-
-       private static abstract class AbstractPhonePanel extends TestPanel
-       {
-               AbstractPhonePanel(String id, IModel<PhoneNumber> phone)
-               {
-                       super(id);
-                       setPanelMarkup("<wicket:panel><span 
wicket:id='areacode'></span> <span wicket:id='prefix'></span>-<span 
wicket:id='suffix'></span></wicket:panel>");
-               }
-       }
-
-       private static class AddPhonePanel extends AbstractPhonePanel
-       {
-               AddPhonePanel(String id, IModel<PhoneNumber> phone)
-               {
-                       super(id, phone);
-                       add(new Label("areacode", new PropertyModel(phone, 
"areacode")));
-                       add(new Label("prefix", new PropertyModel(phone, 
"prefix")));
-                       add(new Label("suffix", new PropertyModel(phone, 
"suffix")));
-               }
-       }
-       private static class QueuePhonePanel extends AbstractPhonePanel
-       {
-               public QueuePhonePanel(String id, IModel<PhoneNumber> phone)
-               {
-                       super(id, phone);
-                       queue(new Label("areacode", new PropertyModel(phone, 
"areacode")));
-                       queue(new Label("prefix", new PropertyModel(phone, 
"prefix")));
-                       queue(new Label("suffix", new PropertyModel(phone, 
"suffix")));
-               }
-       }
-
-       private static abstract class AbstractAddressPanel extends TestPanel
-       {
-               AbstractAddressPanel(String id, IModel<Address> addr)
-               {
-                       super(id);
-                       setPanelMarkup("<wicket:panel><span 
wicket:id='street'></span><br/><span wicket:id='city'></span>, <span 
wicket:id='state'></span> <span wicket:id='zipcode'></span></wicket:panel>");
-               }
-       }
-
-       private static class AddAddressPanel extends AbstractAddressPanel
-       {
-               AddAddressPanel(String id, IModel<Address> addr)
-               {
-                       super(id, addr);
-                       add(new Label("street", new PropertyModel(addr, 
"street")));
-                       add(new Label("city", new PropertyModel(addr, "city")));
-                       add(new Label("state", new PropertyModel(addr, 
"state")));
-                       add(new Label("zipcode", new PropertyModel(addr, 
"zipcode")));
-               }
-       }
-       private class QueueAddressPanel extends AbstractAddressPanel
-       {
-               public QueueAddressPanel(String id, IModel<Address> addr)
-               {
-                       super(id, addr);
-                       queue(new Label("street", new PropertyModel(addr, 
"street")));
-                       queue(new Label("city", new PropertyModel(addr, 
"city")));
-                       queue(new Label("sate", new PropertyModel(addr, 
"state")));
-                       queue(new Label("zipcode", new PropertyModel(addr, 
"zipcode")));
-               }
-       }
-
-       static class AbstractContactsPage extends TestPage
-       {
-               AbstractContactsPage()
-               {
-                       // @formatter:off
-                       setPageMarkup(
-                               "  <div wicket:id='contacts'>"
-                               + "  <span wicket:id='first'></span>"
-                               + "  <span wicket:id='last'></span>"
-                               + "  <div wicket:id='addr'></div>"
-                               + "  <div wicket:id='work'></div>"
-                               + "  <div wicket:id='cell'></div>"
-                               + "</div>");
-                       // @formatter:on
-
-               }
-       }
-
-       public static class AddContactsPage extends AbstractContactsPage
-       {
-               public AddContactsPage()
-               {
-                       add(new RefreshingView<Contact>("contacts")
-                       {
-                               @Override
-                               protected Iterator<IModel<Contact>> 
getItemModels()
-                               {
-                                       return new 
ModelIteratorAdapter<Contact>(store.contacts.values())
-                                       {
-                                               @Override
-                                               protected IModel<Contact> 
model(Contact object)
-                                               {
-                                                       return new 
ContactModel(object);
-                                               }
-                                       };
-                               }
-
-                               @Override
-                               protected void populateItem(Item<Contact> item)
-                               {
-                                       IModel<Contact> model = item.getModel();
-                                       item.add(new Label("first", new 
PropertyModel(model, "first")));
-                                       item.add(new Label("last", new 
PropertyModel(model, "first")));
-                                       item.add(new AddAddressPanel("addr", 
new PropertyModel<Address>(model, "address")));
-                                       item.add(new AddPhonePanel("work", new 
PropertyModel<PhoneNumber>(model, "work")));
-                                       item.add(new AddPhonePanel("cell", new 
PropertyModel<PhoneNumber>(model, "cell")));
-                               }
-                       });
-
-               }
-       }
-
-       public static class QueueContactsPage extends AbstractContactsPage
-       {
-               public QueueContactsPage()
-               {
-                       queue(new RefreshingView<Contact>("contacts")
-                       {
-                               @Override
-                               protected Iterator<IModel<Contact>> 
getItemModels()
-                               {
-                                       return new 
ModelIteratorAdapter<Contact>(store.contacts.values())
-                                       {
-                                               @Override
-                                               protected IModel<Contact> 
model(Contact object)
-                                               {
-                                                       return new 
ContactModel(object);
-                                               }
-                                       };
-                               }
-
-                               @Override
-                               protected void populateItem(Item<Contact> item)
-                               {
-                                       IModel<Contact> model = item.getModel();
-                                       item.queue(new Label("first", new 
PropertyModel(model, "first")));
-                                       item.queue(new Label("last", new 
PropertyModel(model, "first")));
-                                       item.queue(new AddAddressPanel("addr", 
new PropertyModel<Address>(model, "address")));
-                                       item.queue(new AddPhonePanel("work", 
new PropertyModel<PhoneNumber>(model, "work")));
-                                       item.queue(new AddPhonePanel("cell", 
new PropertyModel<PhoneNumber>(model, "cell")));
-                               }
-                       });
-
-               }
-       }
-
-       private static class TestPage extends WebPage implements 
IMarkupResourceStreamProvider
-       {
-               private String markup;
-
-               TestPage()
-               {
-               }
-
-               public TestPage(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               String getPageMarkup()
-               {
-                       return markup;
-               }
-
-               void setPageMarkup(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                       Class<?> containerClass)
-               {
-                       return new StringResourceStream(getPageMarkup());
-               }
-
-       }
-
-       private static class TestPanel extends Panel implements 
IMarkupResourceStreamProvider
-       {
-
-               private String markup;
-
-               TestPanel(String id)
-               {
-                       super(id);
-               }
-
-               void setPanelMarkup(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               String getPanelMarkup()
-               {
-                       return markup;
-               }
-
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                       Class<?> containerClass)
-               {
-                       return new StringResourceStream(getPanelMarkup());
-               }
-       }
-}
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
deleted file mode 100644
index e3f90b4..0000000
--- 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
+++ /dev/null
@@ -1,1135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.queueing;
-
-import static org.apache.wicket.queueing.WicketMatchers.hasPath;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.util.ArrayList;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.markup.IMarkupResourceStreamProvider;
-import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.internal.Enclosure;
-import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.queueing.bodyisachild.BodyIsAChildPage;
-import org.apache.wicket.queueing.bodyisachild.LoginPanel;
-import org.apache.wicket.queueing.nestedborders.InnerBorder;
-import org.apache.wicket.queueing.nestedborders.OuterBorder;
-import org.apache.wicket.queueing.nestedpanels.InnerPanel;
-import org.apache.wicket.queueing.nestedpanels.OuterPanel;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.FormTester;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.jupiter.api.Test;
-
-class ComponentQueueingTest extends WicketTestCase
-{
-       /** {@code [a,b,c] -> [a[b[c]]] } */
-       @Test
-       void dequeue1()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(b, c, a);
-               assertThat(p, hasPath(a, b, c));
-               tester.startPage(p);
-       }
-
-       /**
-        * https://issues.apache.org/jira/browse/WICKET-6361
-        */
-       @Test
-       void dequeueComponentsOnInitialization()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-               
-               //components are queued before their nested container is added 
to the page.
-               //this caused a "Detach called on component...while it had a 
non-empty queue" before WICKET-6361 was fixed
-               b.queue(c);
-               a.add(b);
-               
-               p.add(a);
-
-               tester.startPage(p);
-       }
-       
-       /** {@code [a[b,c]] -> [a[b[c]]] } */
-       @Test
-       void dequeue2()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(a);
-               a.queue(b, c);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(a, b, c));
-       }
-
-       /** {@code [a[b[c]] -> [a[b[c]]] } */
-       @Test
-       void dequeue3()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(a);
-               a.queue(b);
-               b.queue(c);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(a, b, c));
-       }
-
-       /** {@code [a[b],c] -> [a[b[c]]] } */
-       @Test
-       void dequeue4()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(a, c);
-               a.queue(b);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(a, b, c));
-       }
-
-       /** {@code [a(b)],c] -> [a[b[c]]] } */
-       @Test
-       void dequeue5()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-               p.queue(a, c);
-               a.add(b);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(a, b, c));
-       }
-
-       /** {@code [a,b,c] -> [a[b,c]] } */
-       @Test
-       void dequeue6()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'></p><p 
wicket:id='c'></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(a, b, c);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(a, b)));
-               assertThat(p, hasPath(new Path(a, c)));
-       }
-
-       /**
-        * {a[b{e}[d,f{g}]],c} -> [a[b[c,d[e],f[g]]]]
-        */
-       @Test
-       void dequeue7()
-       {
-               TestPage p = new TestPage();
-
-               // @formatter:off
-               p.setPageMarkup(
-                       "  <p wicket:id='a'>"
-                       + "  <p wicket:id='b'>"
-                       + "    <p wicket:id='c'></p>"
-                       + "    <p wicket:id='d'>"
-                       + "      <p wicket:id='e'></p>"
-                       + "    </p>"
-                       + "    <p wicket:id='f'>"
-                       + "      <p wicket:id='g'></p>"
-                       + "    </p>"
-                       + "  </p>"
-                       + "</p>");
-               // @formatter:on
-
-               MarkupContainer a = new A(), b = new B(), c = new C(), d = new 
D(), e = new E(), f = new F(), g = new G();
-
-               a.add(b);
-               b.queue(e);
-               p.queue(a, c);
-               b.add(d);
-               f.queue(g);
-               b.add(f);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(a, b, c)));
-               assertThat(p, hasPath(new Path(a, b, d, e)));
-               assertThat(p, hasPath(new Path(a, b, f, g)));
-       }
-
-
-       /** {@code [a,c[b]] ->| [a[b[c]]] } */
-       @Test
-       void dequeueError1()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-               MarkupContainer a = new A(), b = new B(), c = new C();
-
-               p.queue(b, c);
-               c.queue(a);
-
-               try
-               {
-                       tester.startPage(p);
-                       fail();
-               }
-               catch (WicketRuntimeException e)
-               {
-                       // expected
-               }
-       }
-
-       /** {@code [a,q[r,s]] - > [a[q[r[s]]]] } */
-       @Test
-       void panel1()
-       {
-               MarkupContainer a = new A(), r = new R(), s = new S();
-
-               TestPanel q = new TestPanel("q");
-               q.setPanelMarkup("<wicket:panel><p wicket:id='r'><p 
wicket:id='s'></p></p></wicket:panel>");
-               q.queue(r, s);
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='q'></p></p>");
-
-               p.queue(a, q);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(a, q, r, s)));
-       }
-
-       /** panel has leading markup */
-       @Test
-       void panel2()
-       {
-               MarkupContainer r = new R();
-
-               TestPanel q = new TestPanel("q");
-               q.setPanelMarkup("<html><body><wicket:panel><p 
wicket:id='r'></p></wicket:panel></body></html>");
-               q.queue(r);
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='q'></p>");
-               p.queue(q);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(q, r)));
-       }
-
-       /** panel with a static header section */
-       @Test
-       void panel3()
-       {
-               MarkupContainer r = new R();
-
-               TestPanel q = new TestPanel("q");
-               
q.setPanelMarkup("<html><head><wicket:head><meta/></wicket:head></head>"
-                       + "<body><wicket:panel><p 
wicket:id='r'></p></wicket:panel></body></html>");
-               q.queue(r);
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<html><head></head><body><p 
wicket:id='q'></p></body></html>");
-               p.queue(q);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(q, r)));
-               tester.assertContains("<meta/>"); // contributed by 
<wicket:head>
-       }
-
-       /**
-        * test with inner panels
-        */
-       @Test
-       void nestedPanels()
-       {
-               MarkupContainer r = new R(), s = new S();
-
-               Panel innerPanel = new InnerPanel("inner");
-               innerPanel.queue(s);
-
-               Panel outerPanel = new OuterPanel("outer");
-
-               outerPanel.queue(r, innerPanel);
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<html><head></head><body><p 
wicket:id='outer'></p></body></html>");
-               p.queue(outerPanel);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(outerPanel, r)));
-               assertThat(p, hasPath(new Path(outerPanel, innerPanel, s)));
-               tester.assertContains("<meta/>"); // contributed by 
<wicket:head> in outer
-               tester.assertContains("<meta2/>"); // contributed by 
<wicket:head> in inner
-       }
-
-       @Test
-       void repeater1()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='lv'><p wicket:id='b'><p 
wicket:id='c'></p></p></p>");
-
-               LV l = new LV(3)
-               {
-                       @Override
-                       protected void populateItem(ListItem<Integer> item)
-                       {
-                               item.queue(new B(), new C());
-                       }
-               };
-
-               p.queue(l);
-
-               tester.startPage(p);
-
-               assertEquals(3, l.size());
-               for (Component item : l)
-               {
-                       assertThat(p, hasPath(new Path(l, item, new B(), new 
C())));
-               }
-       }
-
-       /** repeater */
-       @Test
-       void repeater2()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p 
wicket:id='b'><p wicket:id='c'></p></p></p></p>");
-
-               MarkupContainer a = new A();
-               LV l = new LV(3)
-               {
-                       @Override
-                       protected void populateItem(ListItem<Integer> item)
-                       {
-                               item.queue(new B(), new C());
-                       }
-               };
-
-               p.queue(a, l);
-
-               tester.startPage(p);
-
-               assertEquals(3, l.size());
-               for (Component item : l)
-               {
-                       assertThat(p, hasPath(new Path(a, l, item, new B(), new 
C())));
-               }
-       }
-
-       /** repeater with a panel inside */
-       @Test
-       void repeater3()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p 
wicket:id='b'><p wicket:id='q'></p></p></p></p>");
-
-               MarkupContainer a = new A();
-               LV l = new LV(3)
-               {
-                       @Override
-                       protected void populateItem(ListItem<Integer> item)
-                       {
-                               TestPanel q = new TestPanel("q");
-                               q.setPanelMarkup("<wicket:panel><p 
wicket:id='r'><p wicket:id='s'></p></p></wicket:panel>");
-                               q.queue(new R(), new S());
-
-                               item.queue(q, new B());
-                       }
-               };
-
-               p.queue(a, l);
-
-               tester.startPage(p);
-
-               assertEquals(3, l.size());
-               for (Component item : l)
-               {
-                       assertThat(p, hasPath(new Path(a, l, item, new 
B()).add("q").add(new R(), new S())));
-               }
-       }
-
-       /** dequeue, then rerender the page instance after a callback is 
executed */
-       @Test
-       void callback()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><a wicket:id='l'><p 
wicket:id='b'></p></a></p>");
-               MarkupContainer a = new A(), b = new B();
-               L l = new L();
-               p.queue(a, b, l);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(a, l, b)));
-               assertEquals(false, l.isClicked());
-
-               tester.clickLink(l);
-
-               assertEquals(true, l.isClicked());
-       }
-
-
-       /** queuing two components with the same id */
-       @Test
-       void queueIdCollission()
-       {
-               try
-               {
-                       new A().queue(new B(), new B());
-                       fail("Should not be able to queue two components with 
the same id under the same parent");
-               }
-               catch (WicketRuntimeException e)
-               {
-                       // expected
-               }
-       }
-
-
-       @Test
-       void autos1()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-               A a = new A();
-               B b = new B();
-               p.queue(a, b);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-               assertTrue(b.getParent() instanceof Enclosure);
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-
-       @Test
-       void autos2()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-               A a = new A();
-               B b = new B();
-               p.add(a, b);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof TestPage);
-               assertTrue(b.getParent() instanceof TestPage);
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-
-       @Test
-       void autos3()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-               A a = new A();
-               B b = new B();
-               p.queue(b);
-               p.add(a);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof TestPage);
-               assertTrue(b.getParent() instanceof Enclosure);
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-
-       @Test
-       void autos4()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-               A a = new A();
-               B b = new B();
-               p.add(b);
-               p.queue(a);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-               assertTrue(b.getParent() instanceof TestPage);
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-
-       @Test
-       void autos5()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-               A a = new A();
-               B b = new B();
-               p.queue(a);
-               p.add(b);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-               assertTrue(b.getParent() instanceof TestPage);
-
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-
-       /**
-        * Test InlineEnclosure
-        */
-       @Test
-       void autos6()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<div wicket:enclosure='a'><div 
wicket:id='a'></div><div wicket:id='b'></div></div>");
-               A a = new A();
-               B b = new B();
-               p.queue(a, b);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-               assertTrue(b.getParent() instanceof Enclosure);
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                               "<div wicket:enclosure=\"a\" 
id=\"wicket__InlineEnclosure_20793898271\"><div wicket:id=\"a\"></div><div 
wicket:id=\"b\"></div></div>",
-                               tester.getLastResponseAsString());
-
-               // A is not visible, inline enclosure render only itself (the 
placeholder tag)
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("<div id=\"wicket__InlineEnclosure_20793898271\" 
hidden=\"\" data-wicket-placeholder=\"\"></div>", 
tester.getLastResponseAsString());
-       }
-       
-       /**
-        * Test empty child attribute
-        */
-       @Test
-       void autos7()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<wicket:enclosure child=''><div 
wicket:id='a'></div></wicket:enclosure>");
-               A a = new A();
-               
-               p.queue(a);
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-               
-
-               // A is visible, enclosure renders
-
-               assertEquals(
-                       "<wicket:enclosure child=\"a\"><div 
wicket:id=\"a\"></div></wicket:enclosure>",
-                       tester.getLastResponseAsString());
-
-               // A is not visible, enclosure does not render
-
-               a.setVisible(false);
-               tester.startPage(p);
-               assertEquals("", tester.getLastResponseAsString());
-       }
-       
-       /**
-        * Test autocomponent inside not-queue region
-        */
-       @Test
-       void autosInsideNotQueueRegion()
-       {
-               TestPage p = new TestPage();
-               p.setPageMarkup("<div 
wicket:id='outerContainer'><wicket:enclosure><div 
wicket:id='a'></div></wicket:enclosure></div>");
-               Label a = new Label("a", "a");
-               WebMarkupContainer outer;
-               p.add(outer = new WebMarkupContainer("outerContainer"));
-               outer.queue(a);
-               
-               tester.startPage(p);
-
-               assertTrue(a.getParent() instanceof Enclosure);
-       }
-       
-       @Test
-       void border1()
-       {
-               MarkupContainer a = new A(), b = new B(), r = new R(), s = new 
S();
-
-               TestBorder border = new TestBorder("border");
-               border.setBorderMarkup("<wicket:border><b1 wicket:id='r'><b2 
wicket:id='s'>" +
-                               "<wicket:body/></b2></b1></wicket:border>");
-               border.queueToBorder(r, s);
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<out1 wicket:id='a'><p wicket:id='border'><in1 
wicket:id='b'></in1></p></out1>");
-
-               p.queue(a, border, b);
-
-               tester.startPage(p);
-
-               assertThat(p, hasPath(new Path(a, border, r, s, 
border.getBodyContainer(), b)));
-       }
-       
-       @Test
-       void queueBorderBody() throws Exception
-       {
-
-               TestBorder border = new TestBorder("border");
-               
border.setBorderMarkup("<wicket:border><wicket:body/></wicket:border>");
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<div wicket:id=\"border\"><span 
wicket:id=\"label\"></span></div>");
-               
-               p.add(border);
-               border.queue(new Label("label", "test"));
-               
-               tester.startPage(p);
-       }
-
-       @Test
-       void border_nested()
-       {
-               MarkupContainer a = new A(), b = new B(), c= new C(), d = new 
D(), r = new R(), s = new S();
-
-               Border outerBorder = new OuterBorder("outerBorder");
-
-               Border innerBorder = new InnerBorder("innerBorder");
-
-               outerBorder.queueToBorder(r, innerBorder);
-
-               innerBorder.queueToBorder(c, d);
-
-               outerBorder.queueToBorder(s);
-
-
-               TestPage p = new TestPage();
-               p.setPageMarkup("<p wicket:id='a'><p wicket:id='outerBorder'><p 
wicket:id='b'></p></p></p>");
-               
-               p.queue(b, outerBorder, a);
-
-               tester.startPage(p);
-               
-               assertThat(p, hasPath(new Path(a, outerBorder,  r, innerBorder, 
c, d, innerBorder.getBodyContainer(), s)));
-               assertThat(p, hasPath(new Path(a, outerBorder, r, 
outerBorder.getBodyContainer(), b)));
-       }
-
-       @Test
-       void fragment1() {
-               MarkupContainer a = new A(), b = new B(), r = new R(), s = new 
S();
-               
-               TestPage page = new TestPage();
-               page.setPageMarkup("<a wicket:id='a'></a><f 
wicket:id='fragment'></f><b wicket:id='b'></b>"
-                       + "<wicket:fragment wicket:id='f'><r 
wicket:id='r'></r><s wicket:id='s'></s></wicket:fragment>");
-               
-               Fragment fragment = new Fragment("fragment", "f", page);
-
-               fragment.queue(r, s);
-               page.queue(a, b, fragment);
-               
-               assertThat(page, hasPath(new Path(a)));
-               assertThat(page, hasPath(new Path(b)));
-               assertThat(page, hasPath(new Path(fragment, r)));
-               assertThat(page, hasPath(new Path(fragment, s)));
-       }
-
-       @Test
-       void fragment_doesNotDequeueAcrossRegion()
-       {
-               MarkupContainer a = new A();
-
-               TestPage page = new TestPage();
-               page.setPageMarkup("<f 
wicket:id='fragment'></f><wicket:fragment wicket:id='f'><a 
wicket:id='a'></a></wicket:fragment>");
-
-               Fragment fragment = new Fragment("fragment", "f", page);
-
-               page.queue(a, fragment);
-
-               assertThat(page, hasPath(new Path(fragment)));
-               assertNull(a.getParent());
-       }
-
-       
-       @Test
-       void containerTag1()
-       {
-               MarkupContainer a = new A(), b = new B();
-
-               TestPage page = new TestPage();
-               page.setPageMarkup("<wicket:container wicket:id='a'><b 
wicket:id='b'></b></wicket:container>");
-
-               page.queue(a, b);
-
-               assertThat(page, hasPath(new Path(a, b)));
-       }
-       
-       @Test
-       void queueInsideHeader()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup("<html>"
-                       +"<head><title wicket:id='title'></title></head>"
-                       + "<body><div>"
-                       + "Hello!"
-                       + "</div></body>"
-                       + "</html>");
-               
-               page.queue(new Label("title"));
-               
-               tester.startPage(page); 
-               
-               tester.assertContains("title");
-       }
-       
-       @Test
-       void queueInsideAutoLink()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup("<wicket:link>"
-                       + "<a href='test.html'>"
-                       + "<wicket:container 
wicket:id='test'>test</wicket:container>"
-                       + "</a></wicket:link>");
-               
-               page.queue(new WebMarkupContainer("test"));
-               
-               tester.startPage(page); 
-       }
-       
-       @Test
-       void queueInsideLabelComponent()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup("<label wicket:for='input'>"
-                               + "label:"
-                               + "<input wicket:id='input'/>"
-                               + "</label>");
-               
-               page.queue(new TextField<>("input", Model.of("test")));
-               
-               tester.startPage(page); 
-       }
-       
-       @Test
-       void queueInsideTransparentContainer() throws Exception
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup("<div wicket:id='transparentContainer'>"
-                       + "     <div wicket:id='container'>"
-                       + "             <div wicket:id='child'>"
-                       + "     </div>"
-                       + " </div>"
-                       + "</div>");
-               
-               page.add(new 
TransparentWebMarkupContainer("transparentContainer"));
-               page.add(new WebMarkupContainer("container"));
-               page.queue(new WebMarkupContainer("child"));
-               
-               tester.startPage(page); 
-       }
-
-       @Test
-       void queueNestedEnclosure()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup( "<div wicket:enclosure='outer'>" +
-                       "<div wicket:id='outer'>" +
-                       "       <div wicket:enclosure='middle'>" +
-                       "               <div wicket:enclosure='inner'>" +
-                       "                       <div 
wicket:id='inner'>inner</div>" +
-                       "               </div>" +
-                       "               <div wicket:id='middle'>middle</div>" +
-                       "       </div>" +
-                       "       outer" +
-                       "</div>" +
-                       "</div>");
-               
-               WebMarkupContainer container = new WebMarkupContainer("outer");
-               container.add(new WebMarkupContainer("middle"));
-               container.add(new WebMarkupContainer("inner"));
-               
-               page.add(container);
-               
-               tester.startPage(page); 
-       }
-       
-       /**
-        * https://issues.apache.org/jira/browse/WICKET-6088
-        */
-       @Test
-       void queueComponentInsideWcAndEnclosure()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup(" <div wicket:id=\"container\">\n" +
-                       "    <div wicket:enclosure=\"child\">\n" +
-                       "      <p wicket:id=\"child\">1</p>\n" +
-                       "      <a wicket:id=\"child2\">2</a>\n" +
-                       "    </div>\n" +
-                       "  </div>");
-               
-               WebMarkupContainer container = new 
WebMarkupContainer("container");
-
-               container.queue(new Label("child")
-               {
-                       @Override
-                       protected void onInitialize()
-                       {
-                               super.onInitialize();
-
-                               setDefaultModel(Model.of("test"));
-                       }
-               });
-               
-           container.queue(new WebMarkupContainer("child2").setVisible(false));
-
-           page.queue(container);
-               
-               tester.startPage(page); 
-       }
-       @Test
-       void queueComponentInsideBorderAndEnclosure()
-       {
-               TestPage page = new TestPage();
-               page.setPageMarkup(" <div wicket:id=\"panel\"></div>");
-               
-               TestPanel panel = new TestPanel("panel");
-               panel.setPanelMarkup("<wicket:panel>\n"
-                       + "<div wicket:id=\"border\">\n" +
-                       "    <div wicket:enclosure=\"child\">\n" +
-                       "      <p wicket:id=\"child\">1</p>\n" +                
        
-                       "    </div>\n" +
-                       "  </div>\n" +
-                       "</wicket:panel>");
-               
-               TestBorder border = new TestBorder("border");
-               
border.setBorderMarkup("<wicket:border><wicket:body/></wicket:border>");
-               
-               panel.add(border);
-               page.add(panel);
-               border.add(new Label("child"));
-                               
-               tester.startPage(page); 
-       }
-
-       /**
-        * https://issues.apache.org/jira/browse/WICKET-6036
-        */
-       @Test
-       void nestedTags()
-       {
-               IncorrectCloseTagPanel p = new IncorrectCloseTagPanel("test");
-               tester.startComponentInPage(p);
-       }
-
-       /**
-        * https://issues.apache.org/jira/browse/WICKET-6077
-        */
-       @Test
-       void bodyIsAChild() {
-               tester.startPage(BodyIsAChildPage.class);
-
-               tester.assertRenderedPage(BodyIsAChildPage.class);
-
-               String username = "USER";
-               String password = "PASSWD";
-
-               FormTester formTester = 
tester.newFormTester("wmc:login:loginForm");
-               
formTester.setValue("usernameFormGroup:usernameFormGroup_body:username", 
username);
-               
formTester.setValue("passwordFormGroup:passwordFormGroup_body:password", 
password);
-               formTester.submit();
-
-               LoginPanel loginPanel = (LoginPanel) 
tester.getComponentFromLastRenderedPage("wmc:login");
-               assertEquals(username, loginPanel.pojo.username);
-               assertEquals(password, loginPanel.pojo.password);
-       }
-
-       private static class A extends WebMarkupContainer
-       {
-               A()
-               {
-                       super("a");
-               }
-       }
-
-       private static class B extends WebMarkupContainer
-       {
-               B()
-               {
-                       super("b");
-               }
-       }
-
-       private static class C extends WebMarkupContainer
-       {
-               C()
-               {
-                       super("c");
-               }
-       }
-
-       private static class D extends WebMarkupContainer
-       {
-               D()
-               {
-                       super("d");
-               }
-       }
-
-       private static class E extends WebMarkupContainer
-       {
-               E()
-               {
-                       super("e");
-               }
-       }
-
-       private static class F extends WebMarkupContainer
-       {
-               F()
-               {
-                       super("f");
-               }
-       }
-       private static class G extends WebMarkupContainer
-       {
-               G()
-               {
-                       super("g");
-               }
-       }
-
-       private static class R extends WebMarkupContainer
-       {
-               R()
-               {
-                       super("r");
-               }
-       }
-
-       private static class S extends WebMarkupContainer
-       {
-               S()
-               {
-                       super("s");
-               }
-       }
-
-       private static abstract class LV extends ListView<Integer>
-       {
-               LV(int size)
-               {
-                       super("lv");
-                       ArrayList<Integer> values = new ArrayList<>();
-                       for (int i = 0; i < size; i++)
-                               values.add(i);
-                       setModel(new Model<>(values));
-               }
-       }
-
-       private static class L extends Link<Void>
-       {
-               private boolean clicked = false;
-
-               L()
-               {
-                       super("l");
-               }
-
-               @Override
-               public void onClick()
-               {
-                       clicked = true;
-               }
-
-               boolean isClicked()
-               {
-                       return clicked;
-               }
-       }
-
-
-       private static class TestPage extends WebPage implements 
IMarkupResourceStreamProvider
-       {
-               private String markup;
-
-               TestPage()
-               {
-               }
-
-               public TestPage(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               String getPageMarkup()
-               {
-                       return markup;
-               }
-
-               void setPageMarkup(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                       Class<?> containerClass)
-               {
-                       return new StringResourceStream(getPageMarkup());
-               }
-
-       }
-
-       private static class TestPanel extends Panel implements 
IMarkupResourceStreamProvider
-       {
-               private String markup;
-
-               TestPanel(String id)
-               {
-                       super(id);
-               }
-
-               void setPanelMarkup(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               String getPanelMarkup()
-               {
-                       return markup;
-               }
-
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                       Class<?> containerClass)
-               {
-                       return new StringResourceStream(getPanelMarkup());
-               }
-       }
-
-       private static class TestBorder extends Border implements 
IMarkupResourceStreamProvider
-       {
-               private String markup;
-
-               TestBorder(String id)
-               {
-                       super(id);
-               }
-
-               void setBorderMarkup(String markup)
-               {
-                       this.markup = markup;
-               }
-
-               String getBorderMarkup()
-               {
-                       return markup;
-               }
-
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                                                              Class<?> 
containerClass)
-               {
-                       return new StringResourceStream(getBorderMarkup());
-               }
-       }
-}
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
index 6580fb5c..ac48e19 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
@@ -28,6 +28,6 @@ public class SubPage extends BasePage
        {
                super(parameters);
 
-               queue(new Label("version", 
getApplication().getFrameworkSettings().getVersion()));
+               add(new Label("version", 
getApplication().getFrameworkSettings().getVersion()));
        }
 }
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
 
b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
index ba2c2d8..2f8d617 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
@@ -26,7 +26,7 @@ public class TransparentContainerQueuePage extends WebPage
        public TransparentContainerQueuePage(PageParameters parameters)
        {
                super(parameters);
-               queue(new Label("queuedComponent", "Queued label."));
+               add(new Label("queuedComponent", "Queued label."));
        }
        
 }
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
index 665b100..7df2ae0 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
@@ -57,22 +57,24 @@ public class ModalDialogPage extends BasePage
        public ModalDialogPage()
        {
 
-               queue(new RadioGroup("stacked", new PropertyModel<>(this, 
"stacked"))
-                       .setRenderBodyOnly(false).add(new 
AjaxFormChoiceComponentUpdatingBehavior()
-                       {
+               RadioGroup radioGroup = new RadioGroup("stacked", new 
PropertyModel<>(this, "stacked"));
+               radioGroup
+                       .setRenderBodyOnly(false)
+                       .add(new AjaxFormChoiceComponentUpdatingBehavior() {
                                @Override
                                protected void onUpdate(AjaxRequestTarget 
target)
                                {
                                }
-                       }));
+                       });
+               add(radioGroup);
 
-               queue(new Radio<Boolean>("yes", Model.of(true)));
-               queue(new Radio<Boolean>("no", Model.of(false)));
+               radioGroup.add(new Radio<Boolean>("yes", Model.of(true)));
+               radioGroup.add(new Radio<Boolean>("no", Model.of(false)));
 
-               queue(new ModalFragment("start"));
+               add(new ModalFragment("start"));
 
                stackedDialogs = new AjaxListPanel("stackedDialogs");
-               queue(stackedDialogs);
+               add(stackedDialogs);
        }
 
        @Override
@@ -94,15 +96,15 @@ public class ModalDialogPage extends BasePage
                        super(id, "fragment", ModalDialogPage.this);
 
                        Form<Void> form = new Form<Void>("form");
-                       queue(form);
+                       add(form);
                        
                        nestedDialog = new ModalDialog("nestedDialog");
                        nestedDialog.add(new DefaultTheme());
                        nestedDialog.trapFocus();
                        nestedDialog.closeOnEscape();
-                       queue(nestedDialog);
+                       form.add(nestedDialog);
 
-                       queue(new AjaxLink<Void>("ajaxOpenDialog")
+                       form.add(new AjaxLink<Void>("ajaxOpenDialog")
                        {
                                @Override
                                public void onClick(AjaxRequestTarget target)
@@ -111,7 +113,7 @@ public class ModalDialogPage extends BasePage
                                }
                        });
 
-                       queue(new Link<Void>("openDialog")
+                       form.add(new Link<Void>("openDialog")
                        {
                                @Override
                                public void onClick()
@@ -120,7 +122,7 @@ public class ModalDialogPage extends BasePage
                                }
                        });
 
-                       queue(new TextField("text").add(new 
AjaxEventBehavior("keydown")
+                       form.add(new TextField("text").add(new 
AjaxEventBehavior("keydown")
                        {
                                @Override
                                protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes)
@@ -144,7 +146,7 @@ public class ModalDialogPage extends BasePage
                                }
                        }));
 
-                       queue(new WebMarkupContainer("closing")
+                       WebMarkupContainer closing = new 
WebMarkupContainer("closing")
                        {
                                @Override
                                protected void onConfigure()
@@ -153,9 +155,10 @@ public class ModalDialogPage extends BasePage
 
                                        
setVisible(findParent(ModalDialog.class) != null);
                                }
-                       });
+                       };
+                       form.add(closing);
 
-                       queue(new Link<Void>("close")
+                       closing.add(new Link<Void>("close")
                        {
                                @Override
                                public void onClick()
@@ -166,9 +169,9 @@ public class ModalDialogPage extends BasePage
                        
                        final MultiLineLabel lorem = new 
MultiLineLabel("lorem", "");
                        lorem.setOutputMarkupId(true);
-                       queue(lorem);
+                       form.add(lorem);
                        
-                       queue(new AjaxLink<Void>("ipsum") {
+                       form.add(new AjaxLink<Void>("ipsum") {
                                @Override
                                public void onClick(AjaxRequestTarget target)
                                {

Reply via email to