Inserts the specified element into the queue represented by this deque
(in other words, at the tail of this deque) if it is possible to do so
immediately without violating capacity restrictions, returning
{@code true} upon success and throwing an
{@code IllegalStateException} if no space is currently available.
When using a capacity-restricted deque, it is generally preferable to
use {@link #offer(Object) offer}.
<p>This method is equivalent to {@link #addLast}.
@param e the element to add
@return {@code true} (as specified by {@link Collection#add})
@throws IllegalStateException if the element cannot be added at this
time due to capacity restrictions
@throws ClassCastException if the class of the specified element
prevents it from being added to this deque
@throws NullPointerException if the specified element is null and this
deque does not permit null elements
@throws IllegalArgumentException if some property of the specified
element prevents it from being added to this deque
Inserts the specified element into the queue represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returning {@code true} upon success and throwing an {@code IllegalStateException} if no space is currently available. When using a capacity-restricted deque, it is generally preferable to use {@link #offer(Object) offer}.
<p>This method is equivalent to {@link #addLast}.
@param e the element to add @return {@code true} (as specified by {@link Collection#add}) @throws IllegalStateException if the element cannot be added at this time due to capacity restrictions @throws ClassCastException if the class of the specified element prevents it from being added to this deque @throws NullPointerException if the specified element is null and this deque does not permit null elements @throws IllegalArgumentException if some property of the specified element prevents it from being added to this deque